home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / MacPNG Library 1.02 / pngMacSrc 1.02 / png.1 / gif2png / gif2png.h < prev    next >
C/C++ Source or Header  |  1995-05-31  |  3KB  |  108 lines

  1. /*
  2.   gif2png:
  3.  
  4.   Copyright (C) 1995 Alexander Lehmann
  5.  
  6.   This software is provided 'as-is', without any express or implied
  7.   warranty.  In no event will the authors be held liable for any damages
  8.   arising from the use of this software.
  9.  
  10.   Permission is granted to anyone to use this software for any purpose,
  11.   including commercial applications (see below), and to alter it and
  12.   redistribute it freely, subject to the following restrictions:
  13.  
  14.   1. The origin of this software must not be misrepresented; you must not
  15.      claim that you wrote the original software. If you use this software
  16.      in a product, an acknowledgment in the product documentation would be
  17.      appreciated but is not required.
  18.   2. Altered source versions must be plainly marked as such, and must not be
  19.      misrepresented as being the original software.
  20.   3. This notice may not be removed or altered from any source distribution.
  21.   4. Binary only distributions of the software must include the file README
  22.      with the copyright statement. You are welcome to add a copyright
  23.      statement for your modifications and a contact address, though.
  24.  
  25.   Note that this program uses the LZW decompression algorithm, which due to
  26.   patent claims probably requires you to license if you use the algorithm
  27.   in a commercial program or distribute this program on a for-profit basis.
  28.   (See http://www.unisys.com)
  29.  
  30.  
  31.   Alexander Lehmann <alex@hal.rhein-main.de>
  32.  
  33.  */
  34.  
  35. /* get png type definitions */
  36. #include "png.h"
  37.  
  38. #define GIFterminator ';'
  39. #define GIFextension '!'
  40. #define GIFimage ','
  41.  
  42. #define GIFcomment 0xfe
  43. #define GIFapplication 0xff
  44. #define GIFplaintext 0x01
  45. #define GIFgraphicctl 0xf9
  46.  
  47. #define MAXCMSIZE 256
  48.  
  49. typedef unsigned char byte;
  50.  
  51. typedef png_color GifColor;
  52.  
  53. struct GIFimagestruct {
  54.   GifColor colors[MAXCMSIZE];
  55.   unsigned long color_count[MAXCMSIZE];
  56.   int offset_x;
  57.   int offset_y;
  58.   int width;
  59.   int height;
  60.   int trans;
  61.   int interlace;
  62. };
  63.  
  64. struct GIFelement {
  65.   struct GIFelement *next;
  66.   char GIFtype;
  67. #ifndef TMPFILE
  68.   byte *data;
  69.   long allocated_size;
  70. #else
  71.   unsigned long file_offset;
  72. #endif
  73.   long size;
  74.   /* only used if GIFtype==GIFimage */
  75.   struct GIFimagestruct *imagestruct;
  76. };
  77.  
  78. extern struct gif_scr{
  79.   unsigned int  Width;
  80.   unsigned int  Height;
  81.   GifColor      ColorMap[MAXCMSIZE];
  82.   unsigned int  ColorMap_present;
  83.   unsigned int  BitPixel;
  84.   unsigned int  ColorResolution;
  85.   int           Background;
  86.   unsigned int  AspectRatio;
  87. } GifScreen;
  88.  
  89. int ReadGIF(FILE *fd);
  90.  
  91. void allocate_element(void);
  92. void store_block(char *data, int size);
  93. void allocate_image(void);
  94.  
  95. void *xalloc(unsigned long s);
  96. void *xrealloc(void *p, unsigned long s);
  97. void fix_current(void);
  98. byte *access_data(struct GIFelement *e, unsigned long pos, unsigned long len);
  99. void free_mem(void);
  100.  
  101. extern struct GIFelement first;
  102. extern struct GIFelement *current;
  103.  
  104. #ifdef TMPFILE
  105. extern FILE *tempfile;
  106. #endif
  107.  
  108.